home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #047 (1990)(Amiga User Group Deutschland e.V.)[v Disaster Master 2].zip / Franz PD Disk #047 (1990)(Amiga User Group Deutschland e.V.)[v Disaster Master 2].adf / A68K_Beispiele / Cell-Auto.asm < prev    next >
Assembly Source File  |  1989-07-02  |  19KB  |  720 lines

  1. ************************************************************************
  2. * This is an implementation of a cellular automaton of the form:       *
  3. *                                                                      *
  4. *  (t+1)       (t)        (t)        (t)       (t)        (t)          *
  5. * a     = A * a    + B * a    + C * a   + D * a    + E * a             *
  6. *  i           i-2        i-1        i         i+1        i+2          *
  7. *                                                                      *
  8. * See e.g. Stephan Wolfram, Cellular automata as models of complexity, *
  9. * Nature, Vol 311, 4 October 1984.                                     *
  10. *                                                                      *
  11. * This implementation was written by:                                  *
  12. * E. Lenz                                                              *
  13. * Johann-Fichte-Strasse 11                                             *
  14. * 8 Munich 40                                                          *
  15. * Germany                                                              *
  16. *                                                                      *
  17. ************************************************************************
  18.  
  19. _AbsExecBase        equ 4
  20.  
  21. **** exec *****
  22.  
  23. _LVOForbid       equ -$84
  24. _LVOPermit       equ -$8a
  25. _LVOGetMsg       equ -$174
  26. _LVOReplyMsg     equ -$17a
  27. _LVOWaitPort     equ -$180
  28. _LVOCloseLibrary equ -$19e
  29. _LVOOpenLibrary  equ -$228
  30.  
  31. **** intuition ******
  32.  
  33. _LVOClearMenuStrip equ -$36
  34. _LVOCloseWindow    equ -$48
  35. _LVOOpenWindow     equ -$cc
  36. _LVOSetMenuStrip   equ -$108
  37.  
  38. ***** graphics ******
  39.  
  40. _LVOMove            equ -$f0
  41. _LVODraw            equ -$f6
  42. _LVOSetAPen         equ -$156
  43.  
  44. ***** dos ******
  45.  
  46. _LVOOpen         equ -$1e
  47. _LVOClose        equ -$24
  48. _LVORead         equ -$2a
  49. _LVOWrite        equ -$30
  50.  
  51. wd_RPort        equ $32
  52. wd_UserPort     equ $56
  53. pr_MsgPort      equ $5c
  54. pr_CLI          equ $ac
  55. ThisTask        equ $114
  56. VBlankFrequency equ $212
  57.  
  58.        moveq   #0,d0
  59.        movea.l _AbsExecBase,a6   test if WB or CLI
  60.        movea.l ThisTask(a6),a0
  61.        tst.l   pr_CLI(a0)
  62.        bne.s   isCLI
  63.  
  64.        lea     pr_MsgPort(a0),a0  for WB get WB Message
  65.        jsr     _LVOWaitPort(a6)
  66.        jsr     _LVOGetMsg(a6)
  67.  
  68. isCLI  move.l  d0,-(a7)
  69.  
  70.        cmpi.b  #60,VBlankFrequency(a6) test if PAL or NTSC
  71.        beq.s   isNTSC
  72.        move.w  #256,nw+6
  73.  
  74. isNTSC lea     GfxName(pc),a1   Open graphics.library
  75.        moveq   #0,d0
  76.        jsr     _LVOOpenLibrary(a6)
  77.        move.l  d0,GfxBase
  78.        beq.s   Gexit
  79.  
  80.        lea     DosName(pc),a1    open dos library
  81.        moveq   #0,d0
  82.        jsr     _LVOOpenLibrary(a6)
  83.        move.l  d0,DosBase
  84.        beq.s   Gexit
  85.  
  86.        lea     IntName(pc),a1     open intuition library
  87.        moveq   #0,d0
  88.        jsr     _LVOOpenLibrary(a6)
  89.        move.l  d0,IntBase
  90.        beq.s   Gexit
  91.  
  92.        lea     nw(pc),a0          open window
  93.        movea.l IntBase(pc),a6
  94.        jsr     _LVOOpenWindow(a6)
  95.        move.l  d0,window
  96. Gexit  beq     exit
  97.       
  98.  
  99. ; Set menu
  100.  
  101.        movea.l d0,a0           which window
  102.        lea     Menu1(pc),a1    which menu
  103.        jsr     _LVOSetMenuStrip(a6)
  104.  
  105.        movea.l window(pc),a0
  106.        movea.l wd_RPort(a0),a5
  107.  
  108. redraw bsr     fstline         initial configuration
  109.  
  110. draw   movea.l window(pc),a0
  111.        move.l  d6,d0
  112.        addi.l  #$10,d0
  113.        cmp.w   $a(a0),d0
  114.        bpl.s   wait
  115.  
  116.        bsr     next1
  117.        lea     next,a3
  118.        bsr     print
  119.        bsr     next2
  120.        lea     first,a3
  121.        bsr     print
  122.  
  123. wait   bsr     trycls
  124.        beq.s   draw
  125.        cmpi.l  #$200,d7
  126.        beq.s   exit
  127.  
  128.        cmpi.l  #$100,d7
  129.        bne.s   wait
  130.  
  131. ; Choice from menu
  132.  
  133.        movea.l window(pc),a0
  134.        movea.l $5e(a0),a0   Load Window.MessageKey
  135.        move.w  $18(a0),d0   Load message code
  136.        move.w  d0,d1
  137.        andi.w  #$f,d1
  138.        bne.s   ismen2
  139.  
  140.        andi.w  #$f0,d0      Menu 1
  141.        bne.s   menu12       Submenu 1
  142.        moveq   #0,d6        y = 0
  143.        bra.s   draw
  144.  
  145. menu12 cmpi.w  #$20,d0      Submenu 2
  146.        bne.s   wait
  147.        bra.s   redraw
  148.  
  149. ismen2 cmpi.w  #1,d1
  150.        bne     wait
  151.        andi.w  #$f0,d0      Menu 2
  152.        bne.s   menu22
  153.        bsr     paraA        Submenu 1
  154. return movea.l window(pc),a0
  155.        move.w  $a(a0),d6
  156.        bra.s   wait
  157. menu22 cmpi.w  #$20,d0
  158.        bne.s   menu23
  159.        bsr     paraB        Submenu 2
  160.        bra.s   return
  161. menu23 cmpi.w  #$40,d0
  162.        bne.s   menu24
  163.        bsr     paraC        Submenu 3
  164.        bra.s   return
  165. menu24 cmpi.w  #$60,d0
  166.        bne.s   menu25
  167.        bsr     paraD        Submenu 4
  168.        bra.s   return
  169. menu25 cmpi.w  #$80,d0
  170.        bne     wait
  171.        bsr     paraE        Submenu 5
  172.        bra.s   return
  173.  
  174. exit   movea.l IntBase(pc),a6
  175.        movea.l window(pc),a0      Clear menu
  176.        jsr     _LVOClearMenuStrip(a6)
  177.  
  178.        move.l  window(pc),d0      close window
  179.        beq.s   noWin
  180.        movea.l d0,a0
  181.        jsr     _LVOCloseWindow(a6)
  182.  
  183. noWin  move.l  (a7)+,d7
  184.        movea.l _AbsExecBase,a6
  185.        tst.l   d7
  186.        beq.s   NoBenh
  187.        jsr     _LVOForbid(a6)       reply to WB
  188.        movea.l d7,a1
  189.        jsr     _LVOReplyMsg(a6)
  190.        jsr     _LVOPermit(a6)
  191.  
  192. NoBenh move.l  IntBase(pc),d1       close intuition library
  193.        beq.s   noInt
  194.        movea.l d1,a1
  195.        jsr     _LVOCloseLibrary(a6)
  196.  
  197. noInt  move.l  GfxBase(pc),d1       close graphics library
  198.        beq.s   noGfx
  199.        movea.l d1,a1
  200.        jsr     _LVOCloseLibrary(a6)
  201.  
  202. noGfx  movea.l DosBase(pc),a1       close dos library
  203.        beq.s   noDos
  204.        jsr     _LVOCloseLibrary(a6)
  205.  
  206. noDos  moveq   #0,d0                no error
  207.        rts
  208.  
  209. trycls movem.l d0-d6/a0-a6,-(a7)
  210.        movea.l _AbsExecBase,a6
  211.        moveq   #0,d7
  212.        movea.l window(pc),a0
  213.        movea.l wd_UserPort(a0),a0    load Window.UserPort
  214.        jsr     _LVOGetMsg(a6)
  215.        tst.l   d0
  216.        beq.s   noMsg1         No message
  217.  
  218.        movea.l d0,a1
  219.        move.l  $14(a1),d7       Message in d7
  220.        jsr     _LVOReplyMsg(a6) Always reply
  221.  
  222. noMsg1 movem.l (a7)+,d0-d6/a0-a6
  223. noMsg  tst.l   d7
  224.        rts
  225.  
  226. fstline moveq   #0,d0
  227.         lea     first(pc),a3
  228.         move.l  #320,d1
  229. clear   move.l  d0,(a3)+
  230.         dbra    d1,clear
  231.  
  232.         move.l  #$10001,first+640
  233.         lea     first(pc),a3
  234.         moveq   #0,d6
  235.  
  236. print   movea.l GfxBase(pc),a6
  237.         moveq   #0,d0
  238.         moveq   #0,d5         x
  239.         move.l  d6,d1         y
  240.         jsr     _LVOMove(a6)
  241.  
  242.         move.l  #640,d7
  243. prlop   move.w  (a3)+,d0
  244.         andi.l  #3,d0
  245.         movea.l a5,a1
  246.         jsr     _LVOSetAPen(a6)
  247.  
  248.         move.l  d5,d0
  249.         move.l  d6,d1
  250.         movea.l a5,a1
  251.         jsr     _LVODraw(a6)
  252.         addq.l  #1,d5
  253.         dbra    d7,prlop
  254.         addi.l  #1,d6
  255.         rts
  256.  
  257. next2   lea     next(pc),a3
  258.         lea     first(pc),a2
  259.         bra.s   gogo
  260.  
  261. next1   lea     first(pc),a3
  262.         lea     next(pc),a2
  263.  
  264. gogo    move.l  #640,d2
  265. nlop    moveq   #0,d0
  266.         moveq   #0,d3
  267.         move.w  -4(a3),d0
  268.         move.w  A(pc),d3
  269.         mulu    d0,d3
  270.         move.w  -2(a3),d0
  271.         move.w  B(pc),d1
  272.         mulu    d0,d1
  273.         add.l   d1,d3
  274.         move.w  (a3),d0
  275.         move.w  C(pc),d1
  276.         mulu    d0,d1
  277.         add.l   d1,d3
  278.         move.w  2(a3),d0
  279.         move.w  D(pc),d1
  280.         mulu    d0,d1
  281.         add.l   d1,d3
  282.         move.w  4(a3),d0
  283.         move.w  E(pc),d1
  284.         mulu    d0,d1
  285.         add.l   d1,d3
  286.         and.l   #3,d3
  287.         move.w  d3,(a2)+
  288.         adda.l  #2,a3
  289.         dbra    d2,nlop
  290.         rts
  291.  
  292. ; decimal  output
  293.  
  294. decout  lea     Buffer(pc),a0
  295.         moveq   #0,d0
  296. wrlop   andi.l  #$ffff,d4
  297.         tst.l   d4
  298.         beq.s   back
  299.         divu    #10,d4
  300.         swap    d4
  301.         move.b  d4,(a0)+
  302.         swap    d4
  303.         addq.l  #1,d0
  304.         bra.s   wrlop
  305.  
  306. back    tst.l   d0      zero is a special case
  307.         bne.s   bakk
  308.         addq.l  #1,d0
  309.         clr.b   Buffer
  310. bakk    movea.l d6,a0
  311.         adda.l  #21,a0
  312.         moveq   #6,d1
  313.         subq.l  #1,d0
  314. clr     cmp.l   d0,d1
  315.         beq.s   endclr
  316.         move.b  #' ',-(a0)
  317.         subq.l  #1,d1
  318.         bra.s   clr
  319.  
  320. endclr  lea     Buffer(pc),a1
  321. rewlop  move.b  (a1)+,d1
  322.         addi.b  #'0',d1
  323.         move.b  d1,-(a0)
  324.         dbra    d0,rewlop
  325.         rts
  326.  
  327. ; Console handler
  328.  
  329. ConWind bsr     decout
  330.         movea.l DosBase(pc),a6
  331.         move.l  d5,d1
  332.         move.l  #$3ed,d2      Open for read + write
  333.         jsr     _LVOOpen(a6)
  334.         move.l  d0,d4
  335.         beq.s   nogo
  336.  
  337.         move.l  d0,d1
  338.         move.l  d6,d2
  339.         move.l  d7,d3
  340.         jsr     _LVOWrite(a6)
  341.  
  342.         move.l  d4,d1
  343.         move.l  #Buffer,d2
  344.         moveq   #60,d3
  345.         jsr     _LVORead(a6)
  346.  
  347.         move.l  d4,d1
  348.         jsr     _LVOClose(a6)
  349.  
  350. ; Convert input to decimal
  351.  
  352.         moveq   #0,d0
  353.         moveq   #0,d2
  354.         lea     Buffer(pc),a0
  355.         moveq   #0,d1
  356.  
  357. readbuf move.b  (a0)+,d0   Get next char
  358.         cmpi.b  #$a,d0     End of input?
  359.         beq.s   readend
  360.         addq.l  #1,d2
  361.         subi.b  #$30,d0    Convert to decimal
  362.         blt.s   nogo       Error in input
  363.         cmpi.b  #9,d0
  364.         bgt.s   nogo
  365.         mulu    #10,d1
  366.         add.l   d0,d1
  367.         bra.s   readbuf
  368.  
  369. nogo    moveq   #1,d0      Nogood
  370.         rts
  371. readend tst.l   d2
  372.         beq.s   nogo       No input
  373.         cmpi.l  #$ffff,d1  must be word size
  374.         bhi.s   nogo      
  375.         moveq   #0,d0      Is ok
  376.         rts
  377.  
  378. ; *** parameter A ***
  379.  
  380. paraA   move.w  A(pc),d4
  381.         move.l  #aname,d5
  382.         move.l  #atext,d6
  383.         moveq   #aend-atext,d7
  384.         bsr     ConWind
  385.  
  386.         bne.s   noA
  387.         move.w  d1,A
  388. noA     rts
  389.  
  390. ; *** parameter B ***
  391.  
  392. paraB   move.w  B(pc),d4
  393.         move.l  #bname,d5
  394.         move.l  #btext,d6
  395.         moveq   #bend-btext,d7
  396.         bsr     ConWind
  397.  
  398.         bne.s   noA
  399.         move.w  d1,B
  400.         rts
  401.  
  402. ; *** parameter C ***
  403.  
  404. paraC   move.w  C(pc),d4
  405.         move.l  #cname,d5
  406.         move.l  #ctext,d6
  407.         moveq   #cend-ctext,d7
  408.         bsr     ConWind
  409.  
  410.         bne.s   noA
  411.         move.w  d1,C
  412.         rts
  413.  
  414. ; *** parameter D ***
  415.  
  416. paraD   move.w  D(pc),d4
  417.         move.l  #dname,d5
  418.         move.l  #dtext,d6
  419.         moveq   #dend-dtext,d7
  420.         bsr     ConWind
  421.  
  422.         bne.s   noA
  423.         move.w  d1,D
  424.         rts
  425.  
  426. ; *** parameter E ***
  427.  
  428. paraE   move.w  E(pc),d4
  429.         move.l  #ename,d5
  430.         move.l  #etext,d6
  431.         moveq   #eend-etext,d7
  432.         bsr     ConWind
  433.  
  434.         bne.s   noE
  435.         move.w  d1,E
  436. noE     rts
  437.  
  438. A           dc.w 0
  439. B           dc.w 1
  440. C           dc.w 0
  441. D           dc.w 1
  442. E           dc.w 0
  443.             dc.w 0,0
  444. first       ds.w 640
  445.             dc.w 0,0
  446.             dc.w 0,0
  447. next        ds.w 640
  448.             dc.w 0,0
  449.  
  450. DosBase     dc.l 0
  451. GfxBase     dc.l 0
  452. IntBase     dc.l 0
  453.  
  454. window      dc.l 0
  455.  
  456. aname       dc.b 'CON:100/100/200/100/parameter A',0
  457.             even
  458.  
  459. atext       dc.b 'parameter A = '
  460. aaddress    dc.b 'FFFFFF',$d,$a
  461. aend        even
  462.  
  463. bname       dc.b 'CON:100/100/200/100/parameter B',0
  464.             even
  465.  
  466. btext       dc.b 'parameter B = '
  467. baddress    dc.b 'FFFFFF',$d,$a
  468. bend        even
  469.  
  470. cname       dc.b 'CON:100/100/200/100/parameter C',0
  471.             even
  472.  
  473. ctext       dc.b 'parameter C = '
  474. caddress    dc.b 'FFFFFF',$d,$a
  475. cend        even
  476.  
  477. dname       dc.b 'CON:100/100/200/100/parameter D',0
  478.             even
  479.  
  480. dtext       dc.b 'parameter D = '
  481. daddress    dc.b 'FFFFFF',$d,$a
  482. dend        even
  483.  
  484. ename       dc.b 'CON:100/100/200/100/parameter E',0
  485.             even
  486.  
  487. etext       dc.b 'parameter E = '
  488. eaddress    dc.b 'FFFFFF',$d,$a
  489. eend        even
  490.  
  491. DosName     dc.b 'dos.library',0
  492.             even
  493.  
  494. Buffer:
  495.  
  496. GfxName     dc.b 'graphics.library',0
  497.             even
  498.  
  499. IntName     dc.b 'intuition.library',0
  500.             even
  501.  
  502. title       dc.b  'Cellula automata',0
  503.             even
  504.  
  505. ***** Window definition *****
  506.  
  507. nw          dc.w 0,0         Position left,top
  508.             dc.w 640,199     Size width,height
  509.             dc.b 0,1         Colors detail-,block pen
  510.             dc.l $344        IDCMP-Flags
  511.             dc.l $140f       Window flags
  512.             dc.l 0           ^Gadget
  513.             dc.l 0           ^Menu check
  514.             dc.l title       ^Window name
  515. nws         dc.l 0           ^Screen structure,
  516.             dc.l 0           ^BitMap
  517.             dc.w 100         MinWidth
  518.             dc.w 40          MinHeight
  519.             dc.w -1          MaxWidth
  520.             dc.w -1,1        MaxHeight,Screen type
  521.  
  522. **** menu definition ****
  523.  
  524. Menu1       dc.l Menu2       Next menu
  525.             dc.w 50,0        Position left edge,top edge
  526.             dc.w 80,20       Dimensions width,height
  527.             dc.w 1           Menu enabled
  528.             dc.l mtext1      Text for menu header
  529.             dc.l item11      ^First in chain
  530.             dc.l 0,0         Internal
  531.  
  532. mtext1      dc.b 'Redraw',0
  533.             even
  534.  
  535. item11      dc.l item12      next in chained list
  536.             dc.w 0,0         Position left edge,top edge
  537.             dc.w 80,10       Dimensions width,height
  538.             dc.w $52         itemtext+highcomp+itemenabled
  539.             dc.l 0           Mutual exclude
  540.             dc.l I11txt      Pointer to intuition text
  541.             dc.l 0
  542.             dc.b 0,0
  543.             dc.l 0
  544.             dc.w 0
  545.  
  546.  
  547. I11txt      dc.b 0           Front pen  (blue)
  548.             dc.b 1           Back pen   (white)
  549.             dc.b 0,0         Draw mode
  550.             dc.w 0           Left edge
  551.             dc.w 0           Top edge
  552.             dc.l 0           Text font
  553.             dc.l item11txt   Pointer to text
  554.             dc.l 0           Next text
  555.  
  556. item11txt   dc.b 'next page',0
  557.             even
  558.  
  559. item12      dc.l 0           next in chained list
  560.             dc.w 0,10        Position left edge,top edge
  561.             dc.w 80,10       Dimensions width,height
  562.             dc.w $52         itemtext+highcomp+itemenabled
  563.             dc.l 0           Mutual exclude
  564.             dc.l I12txt      Pointer to intuition text
  565.             dc.l 0
  566.             dc.b 0,0
  567.             dc.l 0
  568.             dc.w 0
  569.  
  570.  
  571. I12txt      dc.b 0           Front pen  (blue)
  572.             dc.b 1           Back pen   (white)
  573.             dc.b 0,0         Draw mode
  574.             dc.w 0           Left edge
  575.             dc.w 0           Top edge
  576.             dc.l 0           Text font
  577.             dc.l item12txt   Pointer to text
  578.             dc.l 0           Next text
  579.  
  580. item12txt   dc.b 'from start',0
  581.             even
  582.  
  583.  
  584. ***** 2nd menu definition *****
  585.  
  586. Menu2       dc.l 0           Next menu
  587.             dc.w 150,0       Position left edge,top edge
  588.             dc.w 120,20      Dimensions width,height
  589.             dc.w 1           Menu enabled
  590.             dc.l mtext2      Text for menu header
  591.             dc.l item21      ^First in chain
  592.             dc.l 0,0         Internal
  593.  
  594. mtext2      dc.b 'change rule',0
  595.             even
  596.  
  597.  
  598. item21      dc.l item22      next in chained list
  599.             dc.w 0,0         Position left edge,top edge
  600.             dc.w 120,10      Dimensions width,height
  601.             dc.w $52         itemtext+highcomp+itemenabled
  602.             dc.l 0           Mutual exclude
  603.             dc.l I21txt      Pointer to intuition text
  604.             dc.l 0
  605.             dc.b 0,0
  606.             dc.l 0
  607.             dc.w 0
  608.  
  609.  
  610. I21txt      dc.b 0           Front pen  (blue)
  611.             dc.b 1           Back pen   (white)
  612.             dc.b 0,0         Draw mode
  613.             dc.w 0           Left edge
  614.             dc.w 0           Top edge
  615.             dc.l 0           Text font
  616.             dc.l item21txt   Pointer to text
  617.             dc.l 0           Next text
  618.  
  619. item21txt   dc.b 'parameter A',0
  620.             even
  621.  
  622. item22      dc.l item23      next in chained list
  623.             dc.w 0,10        Position left edge,top edge
  624.             dc.w 120,10      Dimensions width,height
  625.             dc.w $52         itemtext+highcomp+itemenabled
  626.             dc.l 0           Mutual exclude
  627.             dc.l I22txt      Pointer to intuition text
  628.             dc.l 0
  629.             dc.b 0,0
  630.             dc.l 0
  631.             dc.w 0
  632.  
  633.  
  634. I22txt      dc.b 0           Front pen  (blue)
  635.             dc.b 1           Back pen   (white)
  636.             dc.b 0,0         Draw mode
  637.             dc.w 0           Left edge
  638.             dc.w 0           Top edge
  639.             dc.l 0           Text font
  640.             dc.l item22txt   Pointer to text
  641.             dc.l 0           Next text
  642.  
  643. item22txt   dc.b 'parameter B',0
  644.             even
  645.  
  646. item23      dc.l item24      next in chained list
  647.             dc.w 0,20        Position left edge,top edge
  648.             dc.w 120,10      Dimensions width,height
  649.             dc.w $52         itemtext+highcomp+itemenabled
  650.             dc.l 0           Mutual exclude
  651.             dc.l I23txt      Pointer to intuition text
  652.             dc.l 0
  653.             dc.b 0,0
  654.             dc.l 0
  655.             dc.w 0
  656.  
  657.  
  658. I23txt      dc.b 0           Front pen  (blue)
  659.             dc.b 1           Back pen   (white)
  660.             dc.b 0,0         Draw mode
  661.             dc.w 0           Left edge
  662.             dc.w 0           Top edge
  663.             dc.l 0           Text font
  664.             dc.l item23txt   Pointer to text
  665.             dc.l 0           Next text
  666.  
  667. item23txt   dc.b 'parameter C',0
  668.             even
  669.  
  670. item24      dc.l item25      next in chained list
  671.             dc.w 0,30        Position left edge,top edge
  672.             dc.w 120,10      Dimensions width,height
  673.             dc.w $52         itemtext+highcomp+itemenabled
  674.             dc.l 0           Mutual exclude
  675.             dc.l I24txt      Pointer to intuition text
  676.             dc.l 0
  677.             dc.b 0,0
  678.             dc.l 0
  679.             dc.w 0
  680.  
  681.  
  682. I24txt      dc.b 0           Front pen  (blue)
  683.             dc.b 1           Back pen   (white)
  684.             dc.b 0,0         Draw mode
  685.             dc.w 0           Left edge
  686.             dc.w 0           Top edge
  687.             dc.l 0           Text font
  688.             dc.l item24txt   Pointer to text
  689.             dc.l 0           Next text
  690.  
  691. item24txt   dc.b 'parameter D',0
  692.             even
  693.  
  694. item25      dc.l 0           next in chained list
  695.             dc.w 0,40        Position left edge,top edge
  696.             dc.w 120,10      Dimensions width,height
  697.             dc.w $52         itemtext+highcomp+itemenabled
  698.             dc.l 0           Mutual exclude
  699.             dc.l I25txt      Pointer to intuition text
  700.             dc.l 0
  701.             dc.b 0,0
  702.             dc.l 0
  703.             dc.w 0
  704.  
  705.  
  706. I25txt      dc.b 0           Front pen  (blue)
  707.             dc.b 1           Back pen   (white)
  708.             dc.b 0,0         Draw mode
  709.             dc.w 0           Left edge
  710.             dc.w 0           Top edge
  711.             dc.l 0           Text font
  712.             dc.l item25txt   Pointer to text
  713.             dc.l 0           Next text
  714.  
  715. item25txt   dc.b 'parameter E',0
  716.             even
  717.  
  718.             end
  719.  
  720.